Nginx配置https

#腾讯云证书文档
https://cloud.tencent.com/document/product/400/4143

备注,手动编译安装需要安加入 SSL 模块(http_ssl_module)

示例

server {
    # 开启https端口
    listen 443 ssl;
    # 填写绑定证书的域名
    server_name xxx.com;

    # nginx的错误日志
    access_log /var/log/nginx/sd-access.log;
    error_log /var/log/nginx/sd-error.log;

    # 默认网站根目录
    root /data/releases/websites/sd/htdocs;

    # 将以下路由下放到前台
    location ~ (^/taskm)|(^/perm)|(^/data) {
        try_files $uri /index.html;
    }

    location / {
        # 入口文件,注意这里有先后顺序
        index index.html index.php index.htm;
        if (!-e $request_filename) {
            rewrite . /index.php last;
        }
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    # https证书配置
    # 开启ssl
    ssl on;
    # 证书文件
    ssl_certificate /usr/local/nginx/conf/ssl/xxxx.crt;
    # 私钥文件
    ssl_certificate_key /usr/local/nginx/conf/ssl/xxxx.key;
    # 配置会话超时时间
    ssl_session_timeout 5m;
    # 配置共享会话缓存大小
    ssl_session_cache shared:SSL:10m;
    # ssl_protocols 和 ssl_ciphers 用来限制连接只包含 SSL/TLS 的加強版本和算法
    # 配置协议
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    # 配置加密套件
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    # 优先采取服务器算法
    ssl_prefer_server_ciphers on;

    # Fastcgi服务器和程序(PHP,Python)沟通的协议.
    location ~ \.php$ {
        # 设置监听端口
        fastcgi_pass   127.0.0.1:9000;
        # 设置nginx的默认首页文件,上面index设置过
        fastcgi_index  index.php;
        # 设置脚本文件请求的路径
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        # 引入fastcgi的配置文件
        include fastcgi_params;
        fastcgi_param SERVER_NAME $http_host;
        fastcgi_ignore_client_abort on;
        fastcgi_connect_timeout 600s;
        fastcgi_send_timeout 600s;
        fastcgi_read_timeout 600s;
    }

    # 对图片缓存时间设置
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
        expires 30d;
        access_log off;
    }

    # 对JS和CSS缓存时间设置
    location ~ .*\.(js|css)?$ {
        expires 7d;
        access_log off;
    }
}

# 使用全站加密,HTTP 自动跳转 HTTPS, 注意配置这里上面就不能再监听80端口
server {
    # 80端口访问
    listen 80;
    # 配置访问域名 不包含协议
    server_name xxx.com;
    # 使用url重写模块重写url 访问非https的url重定向到http上去
    rewrite ^/(.*) https://$host/$1 permanent;
}

denson
366 声望57 粉丝

« 上一篇
CodeIgniter笔记